import React, { useEffect } from 'react';
import EventEmitter from './EventEmitter';
import common from '@src/utils/common';

const Test = () => {
  useEffect(() => {
    // function* foo1() {
    //   yield 1;
    //   yield 2;
    //   return 3;
    // }
    // console.log('hhhh');
    // common.asyncToGenerator(foo1).then((res) => {
    //   console.log(res, 'Res');
    // });
    const res = common.replace('ds', 'ab');
    const isVal = common.isValid('()[]{)');
    console.log(isVal);
    const num = common.addNum('10765500', '1072300');
    const qian = common.twoQianfenwei('12334343443');
    console.log(qian, 'qian');
    const emitter = new EventEmitter();
    // console.log(emitter);
    const funcA = (val) => {
      console.log('test1', val);
    };
    emitter.once('test', funcA);
    emitter.emit('test', 'hhhh');
  }, []);
  return <div>测试</div>;
};

export default Test;
// class test extends EventEmitter {
//   constructor() {
//     super();
//     console.log(this, 'this');
//   }
//   // uj
// }
// export default test;

// 面试题
// <!DOCTYPE html>
// <html lang="en">
//   <head>
//     <meta charset="UTF-8" />
//     <meta http-equiv="X-UA-Compatible" content="IE=edge" />
//     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
//     <title>Document</title>
//   </head>
//   <body>
//     <div>
//       输入框
//       <input type="text" id="input" />
//       <ul id="selectUl">
//         <li>1</li>
//         <li>2</li>
//       </ul>
//     </div>
//     <script>
// 写代码用原生JS实现一个类似百度搜索框的自动完成控件，
// 比如候选结果集arr=['aaa', 'abc', 'acc', 'dda',…];
//  用户输入'a',下拉列表会出现以字母a开头的项'aaa', 'abc', 'acc'。
// 要求，鼠标或键盘可以选中候选结果到输入框
// const arr = ["aaa", "abc", "acc", "dda"];
// document.getElementById("input").onchange = inputChange

// function inputChange() {
//   const result = document.getElementById("input").value;
//   let resultArr = [];
//   for (let i = 0; i < arr.length; i++) {
//     if (arr[i].indexOf(result) === 0) {
//       resultArr.push(arr[i]);
//     }
//   }
//   let resultStr = "";
//   for (let i = 0; i < resultArr.length; i++) {
//     resultStr = resultStr + "<li>" + resultArr[i] + "</li>";
//   }
//   document.getElementById("selectUl").innerHTML = resultStr;
// };

// document.getElementById("selectUl").onclick = function(e) {
//   const target = e.target.innerText;
//   console.log(target, "e");
//   document.getElementById("input").value = target;
//   inputChange()
// };
// 实现超出整数存储范围的两个大正整数相加 function add(a, b) 。注意：参数 a 和 b 以及函数的返回值都是字符串
//       add('111', '999')
//       function add(num1, num2) {
//         const maxLen = Math.max(num1.length, num2.length);
//         num1 = num1.padStart(maxLen, '0')
//         num2 = num2.padStart(maxLen, '0')
//         let sum = "";
//         let bit = 0;
//         let car = 0;

//         for (let i = maxLen-1; i >=0; i--) {
//           bit = Number(num2[i]) + Number(num1[i]) + car;
//           car = Math.floor(bit / 10);
//           sum = (bit % 10) + sum;
//         }

//         if (car) {
//           sum = car + sum
//         }
//         return sum
//       }
//     </script>
//   </body>
// </html>
{/* <script>
      //       两个数组，例如：[0, 1, 1, 2, 3, 3] 和 [2, 3, 4, 5, 5, 6, 6]
      // 1. 去重，例如：[0, 1, 2, 3] 和 [2, 3, 4, 5, 6]
      // 2. 并集并去重，例如：[0, 1, 2, 3, 4, 5, 6]
      // 3. 交集并去重，例如：[2, 3]
      // 4. 差集并去重，例如：[0, 1] 和 [4, 5, 6]

      function set(arr) {
        const newArr = [];
        arr.forEach((item) => {
          if (newArr.indexOf(item) === -1) {
            newArr.push(item);
          }
        });
        console.log(newArr);
        return newArr;
      }
      set([0, 1, 1, 2, 3, 3]);

      function con(arr1, arr2) {
        return set([...arr1, ...arr2]);
      }
      function jiaoji(arr1, arr2) {
        const newArr = [];
        arr1.forEach((item) => {
          arr2.forEach((cur) => {
            if (item === cur) {
              newArr.push(cur);
            }
          });
        });
        return set(newArr);
      }

      function chaji(arr1, arr2) {
        const newArr = arr1.filter(item => {
         return !arr2.includes(item)
        })
        return set(newArr);
      }

      const result =  chaji([0, 1, 1, 2, 3, 3], [2, 3, 4, 5, 5, 6, 6])
      console.log(result, "result")
      // function objectOrArr() {
      //   const array = [
      //     { id: 'a', name: 'aa', value: 1 },
      //     { id: 'b', name: 'bb', value: 2 },
      //     { id: 'c', name: 'cc', value: 3 },
      //   ];
      //   // {"a":{"name":"aa","value":1},"b":{"name":"bb","value":2},"c":{"name":"cc","value":3}}
      //   const obj = {};
      //   array.forEach((cur) => {
      //     const {id, ...item} = cur;
      //     obj[cur.id] = item;
      //   });
      //   console.log(obj);
      // }
      // objectOrArr();

      // function arrOrObj() {
      //   const obj = {
      //     a: { name: 'aa', value: 1 },
      //     b: { name: 'bb', value: 2 },
      //     c: { name: 'cc', value: 3 },
      //   };
      //   const arr = [];
      //   for (item in obj) {
      //     arr.push({ id: item, ...obj[item] });
      //   }
      //   console.log(arr, 'arr');
      // }
      // arrOrObj()
      // function sleep(delay) {
      //   return new Promise((reslove, reject) => {
      //     setTimeout(() => {
      //       reslove();
      //     }, delay);
      //   });
      // }
      //     function test() {
      //       const list = [
      //   {name: 'Robin',  hobby: 'aa'},
      //   {name: 'Robin',  hobby: 'bb'},
      //   {name: 'Robin',  hobby: 'cc'}
      //   {name: 'Jake',  hobby: 'xxx'},
      //   {name: 'Jake',  hobby: 'yyy'},
      //   {name: 'Jake',  hobby: 'zzz'}
      // ]
      // merge(list, 'name', 'hobby')
      // /*
      //   [
      //     {name: 'Robin',  hobby: ['aa', 'bb', 'cc']},
      //     {name: 'Jake',  hobby: ['xxx', 'yyy', 'zzz']}
      //   ]
      // */
      // //     }
      //     function merge(list, compareKey, mergeKey) {
      //       const newArr = []
      //       list.reduce((prev, cur) => {
      //       }, []);
      //     }
      //       # 已知斐波那契数列第一项等于1， 第二项等于1， 从第三项开始，每项的值等于前两项之和，实现一个方法， 求出第 n 项的值

      // # 数列： 1，1，2，3，5，8，13，......，n
      // const result = fibonacci(8);
      // console.log(result, 'res');
      // function fibonacci(n) {
      //   if (n === 1 || n === 2) {
      //     return 1;
      //   } else {
      //     return fibonacci(n - 1) + fibonacci(n - 2);
      //   }
      // }

      // fibonacci(1)
      // // 1
      // fibonacci(2)
      // // 1
      // fibonacci(5)
      // // 5
      // fibonacci(10)
      // // 55

      // var object = { a: { b: { c: 3 } } };

      // function getVal(obj, path, defaultVal) {
      //   // obj [a, b,c]
      //   const arr = path.split('.');
      //   let value = obj;
      //   for (let i = 0; i < arr.length; i++) {
      //     if (!value[arr[i]]) {
      //       return undefined;
      //     } else {
      //       value = value[arr[i]];
      //     }
      //   }
      //   return value;
      // }
      // const a = getVal(object, 'a.b.c');
      // console.log(a);
      // // => 3

      // getVal(object, ['a', 'b', 'c']);
      // // => 3

      // getVal(object, 'a.b.c', 'default')
      // // => default
    </script> */}